package com.atguigu.es.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

/*
bean和数据库表的关系
    一个类对应一张表，类的属性对应的是表的列
    一个对象对应表的一行数据
    对象的一个属性对应表的一个列的值
            mybatis：TableName描述bean对应的表名，Id描述主键，TableFiled描述属性对应表的列
 bean和es的索引的关系
    一个类对应一个映射，类的属性对应映射中的一个属性
    一个对象对应一个文档
    @Document：表示bean和索引的映射关系
        indexName：对应的索引名称
     @Id: 表示该字段对应索引中的主键id
     @Field：表示属性和索引映射中的属性 的映射关系
            value 映射es中的属性名
            type：属性的类型
            analyzer：使用的分词器
            index：是否创建索引，默认true创建
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "user" ,shards = 2 , replicas = 3)
public class User {//clazz.newInstance()
    @Id
    private Long id;
    @Field(value = "username" ,type = FieldType.Text , analyzer = "ik_max_word")
    private String username;
    @Field(value = "salary" ,type = FieldType.Double )
    private Double salary;
    @Field(value = "email" ,type = FieldType.Keyword , index = false)
    private String email;
}
